package indi.jp.project.business.pub.pojo.po;

import com.fasterxml.jackson.annotation.JsonFormat;
import indi.jp.project.core.entity.BasePO;

import javax.validation.constraints.NotBlank;
import java.util.Date;

/**
 * 项目PO
 *
 * @author jiangping
 * @date 2022/5/27
 */
public class ProjectPO extends BasePO {

    /**
     * 项目编号
     */
//    @NotBlank(message = "项目编号不能为空")
    private String code;
    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空")
    private String name;
    /**
     * 业务类型
     */
    @NotBlank(message = "业务类型不能为空")
    private String businessType;
    /**
     * 地址编码
     */
    private String addrCode;
    /**
     * 地址名称
     */
    private String addrName;
    /**
     * 具体地址
     */
    private String addrSpec;
    /**
     * 坐标
     */
    private String axis;
    /**
     * 部门ID
     */
//    @NotBlank(message = "承担部门不能为空")
    private String departmentId;
    /**
     * 部门编码
     */
//    @NotBlank(message = "承担部门不能为空")
    private String departmentCode;
    /**
     * 部门名称
     */
//    @NotBlank(message = "承担部门不能为空")
    private String departmentName;
    /**
     * 业主单位ID
     */
    private String clientCompanyId;
    /**
     * 业主单位名称,往来单位表名称
     */
    private String clientCompanyName;
    /**
     * 业主单位重要性（0:一般，1:重要），往来单位表重要性
     */
    private Integer importanceOfClient;
    /**
     * 取得方式（0:投标，1:委托）
     */
    private Integer wayOfGet;
    /**
     * 办事处
     */
//    @NotBlank(message = "办事处不能为空")
    private String branchOffice;
    /**
     * 客户经理
     */
    private String customerManager;
    /**
     * 事业部
     */
    private String division;
    /**
     * 市场总监
     */
    private String marketingDirector;
    /**
     * 项目开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date projectBeginDate;
    /**
     * 项目完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date projectCompleteDate;
    /**
     * 合同额，单位分
     */
    private Long amountOfContract;
    /**
     * 经营计提基数
     */
    private String accrualRadix;
    /**
     * 经营计提比例
     */
    private String accrualRatio;
    /**
     * 经营费，单位分
     */
    private Long feeOfOperation;
    /**
     * 是否需要合同（0:否，1:是）
     */
    private Integer needContract;
    /**
     * 毛利润，单位分
     */
    private Long grossProfit;
    /**
     * 项目层级（0:所级，1:事业部级）
     */
    private Integer projectLevel;
    /**
     * 质量目标（0:精品项目、1:优良项目、2:合格项目）
     */
    private Integer goalOfQuality;
    /**
     * 项目负责人
     */
    private String projectCharge;
    /**
     * 项目主管
     */
    private String projectSupervisor;
    /**
     * 主办部门
     */
//    @NotBlank(message = "主办部门不能为空")
    private String organizeDepartment;
    /**
     * 协办部门
     */
    private String assistedDeptartment;
    /**
     * 协办部门负责人
     */
    private String assistedCharge;
    /**
     * 协办部门负责人手机号
     */
    private String assistedChargePhone;
    /**
     * 经营分包备注
     */
    private String subcontractDescription;
    /**
     * 其他分包（0:直接成本、1:分包合同）
     */
    private Integer subcontractType;
    /**
     * 项目风险
     */
    private String projectRisk;
    /**
     * 项目工作内容相关技术及人员要求
     */
    private String projectDemand;
    /**
     * 项目状态
     */
    @NotBlank(message = "项目状态不能为空")
    private String status;
    /**
     * 状态名
     */
    private String statusName;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddrCode() {
        return addrCode;
    }

    public void setAddrCode(String addrCode) {
        this.addrCode = addrCode;
    }

    public String getAddrName() {
        return addrName;
    }

    public void setAddrName(String addrName) {
        this.addrName = addrName;
    }

    public String getAddrSpec() {
        return addrSpec;
    }

    public void setAddrSpec(String addrSpec) {
        this.addrSpec = addrSpec;
    }

    public String getAxis() {
        return axis;
    }

    public void setAxis(String axis) {
        this.axis = axis;
    }

    public String getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(String departmentId) {
        this.departmentId = departmentId;
    }

    public String getDepartmentCode() {
        return departmentCode;
    }

    public void setDepartmentCode(String departmentCode) {
        this.departmentCode = departmentCode;
    }

    public String getDepartmentName() {
        return departmentName;
    }

    public void setDepartmentName(String departmentName) {
        this.departmentName = departmentName;
    }

    public String getClientCompanyId() {
        return clientCompanyId;
    }

    public void setClientCompanyId(String clientCompanyId) {
        this.clientCompanyId = clientCompanyId;
    }

    public String getClientCompanyName() {
        return clientCompanyName;
    }

    public void setClientCompanyName(String clientCompanyName) {
        this.clientCompanyName = clientCompanyName;
    }

    public Integer getImportanceOfClient() {
        return importanceOfClient;
    }

    public void setImportanceOfClient(Integer importanceOfClient) {
        this.importanceOfClient = importanceOfClient;
    }

    public Integer getWayOfGet() {
        return wayOfGet;
    }

    public void setWayOfGet(Integer wayOfGet) {
        this.wayOfGet = wayOfGet;
    }

    public String getBranchOffice() {
        return branchOffice;
    }

    public void setBranchOffice(String branchOffice) {
        this.branchOffice = branchOffice;
    }

    public Date getProjectBeginDate() {
        return projectBeginDate;
    }

    public void setProjectBeginDate(Date projectBeginDate) {
        this.projectBeginDate = projectBeginDate;
    }

    public Date getProjectCompleteDate() {
        return projectCompleteDate;
    }

    public void setProjectCompleteDate(Date projectCompleteDate) {
        this.projectCompleteDate = projectCompleteDate;
    }

    public Long getAmountOfContract() {
        return amountOfContract;
    }

    public void setAmountOfContract(Long amountOfContract) {
        this.amountOfContract = amountOfContract;
    }

    public String getAccrualRadix() {
        return accrualRadix;
    }

    public void setAccrualRadix(String accrualRadix) {
        this.accrualRadix = accrualRadix;
    }

    public String getAccrualRatio() {
        return accrualRatio;
    }

    public void setAccrualRatio(String accrualRatio) {
        this.accrualRatio = accrualRatio;
    }

    public Long getFeeOfOperation() {
        return feeOfOperation;
    }

    public void setFeeOfOperation(Long feeOfOperation) {
        this.feeOfOperation = feeOfOperation;
    }

    public Integer getNeedContract() {
        return needContract;
    }

    public void setNeedContract(Integer needContract) {
        this.needContract = needContract;
    }

    public Long getGrossProfit() {
        return grossProfit;
    }

    public void setGrossProfit(Long grossProfit) {
        this.grossProfit = grossProfit;
    }

    public Integer getProjectLevel() {
        return projectLevel;
    }

    public void setProjectLevel(Integer projectLevel) {
        this.projectLevel = projectLevel;
    }

    public Integer getGoalOfQuality() {
        return goalOfQuality;
    }

    public void setGoalOfQuality(Integer goalOfQuality) {
        this.goalOfQuality = goalOfQuality;
    }

    public String getProjectCharge() {
        return projectCharge;
    }

    public void setProjectCharge(String projectCharge) {
        this.projectCharge = projectCharge;
    }

    public String getProjectSupervisor() {
        return projectSupervisor;
    }

    public void setProjectSupervisor(String projectSupervisor) {
        this.projectSupervisor = projectSupervisor;
    }

    public String getOrganizeDepartment() {
        return organizeDepartment;
    }

    public void setOrganizeDepartment(String organizeDepartment) {
        this.organizeDepartment = organizeDepartment;
    }

    public String getAssistedDeptartment() {
        return assistedDeptartment;
    }

    public void setAssistedDeptartment(String assistedDeptartment) {
        this.assistedDeptartment = assistedDeptartment;
    }

    public String getAssistedCharge() {
        return assistedCharge;
    }

    public void setAssistedCharge(String assistedCharge) {
        this.assistedCharge = assistedCharge;
    }

    public String getAssistedChargePhone() {
        return assistedChargePhone;
    }

    public void setAssistedChargePhone(String assistedChargePhone) {
        this.assistedChargePhone = assistedChargePhone;
    }

    public String getSubcontractDescription() {
        return subcontractDescription;
    }

    public void setSubcontractDescription(String subcontractDescription) {
        this.subcontractDescription = subcontractDescription;
    }

    public Integer getSubcontractType() {
        return subcontractType;
    }

    public void setSubcontractType(Integer subcontractType) {
        this.subcontractType = subcontractType;
    }

    public String getProjectRisk() {
        return projectRisk;
    }

    public void setProjectRisk(String projectRisk) {
        this.projectRisk = projectRisk;
    }

    public String getProjectDemand() {
        return projectDemand;
    }

    public void setProjectDemand(String projectDemand) {
        this.projectDemand = projectDemand;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusName() {
        return statusName;
    }

    public void setStatusName(String statusName) {
        this.statusName = statusName;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public String getCustomerManager() {
        return customerManager;
    }

    public void setCustomerManager(String customerManager) {
        this.customerManager = customerManager;
    }

    public String getDivision() {
        return division;
    }

    public void setDivision(String division) {
        this.division = division;
    }

    public String getMarketingDirector() {
        return marketingDirector;
    }

    public void setMarketingDirector(String marketingDirector) {
        this.marketingDirector = marketingDirector;
    }
}
